import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

public class TestDemo {
    public static void main(String[] args) {
        System.out.println(countGood(new int[]{1,1,1,1,1}, 10));
    }

//    public static long countGood(int[] nums, int k) {
//        long result = 0L;
//        // 滑动窗口 subLen为窗口长度
//        for (int subLen = 2;subLen < nums.length;subLen++) {
//            int count = 0;
//            for (int start = 0;start < nums.length;start++) {
//                if (start + subLen > nums.length) break;
//
//                for (int i = 1;i < subLen;i++) {
//                    if (nums[start] == nums[start+i]) count++;
//                    if ((long) count >= k) {
//                        result++;
//                        break;
//                    }
//                }
//            }
//        }
//        return result;
//    }
    public static long countGood(int[] nums, int k) {
        Map<Integer, Integer> cnt = new HashMap<>();
        long ans = 0, cur = 0;
        int i = 0;
        for (int x : nums) {
            cur += cnt.merge(x, 1, Integer::sum) - 1;
            while (cur - cnt.get(nums[i]) + 1 >= k) {
                cur -= cnt.merge(nums[i++], -1, Integer::sum);
            }
            if (cur >= k) {
                ans += i + 1;
            }
        }
        return ans;
    }
}